﻿using System;
  namespace _01_基本数据类型 
{
    class Program
    { 
        static void Main(string[]args) 
        {
            //值类型
            #region 1-整形类型
            /*
            sbyte number3 = 127;//byte byte byte byte byte byte byte byte byte byte byte byte byte byte 
            int number =10;
            Int16 number1=11;//short short short short short short short short short short short short
            Int32 number0=500;//int int int int int int int int int int int int int int int int int 
            Int64 number2=700;//long long long long long long lomg long long long long long long long
            //uint unumber3 ushort unumber2 ulong number1 u=没有符号,表示的值不一样。
            Console.WriteLine(number0);
            Console.WriteLine(number);
            Console.WriteLine(number1);
            Console.WriteLine(number2);
            Console.WriteLine(number3);
            */
            //byte numberss = 255;
            //Byte numbers = 255;//字节 8位

            //int number = 1;
            //Int32 number1 = 2;//4个字节 32位

            //short number2 = 3;
            //Int16 number3 = 4;//2个字节 16位

            //long number4 = 5;
            //Int64 number5 = 6;//8个字节 64位

            //uint number6 = 7;
            //UInt32 number7 = 8;//加u 表示没有负号

            //ushort number8 = 9;
            //UInt16 number9 = 10;

            //ulong number10 = 11;
            //UInt64 number11 = 12;

            //byte numberss = 255;
            //Byte numbers = 255;//字节

            //int number = 1;
            //Int32 number1 = 2;//4个字节 32位

            //short number2 = 3;
            //Int16 number3 = 4;//2个字节 16位

            //long number4 = 5;
            //Int64 number5 = 6;//8个字节 64位

            //uint number6 = 7;
            //UInt32 number7 = 8;//加u 表示没有负号

            //ushort number8 = 9;
            //UInt16 number9 = 10;

            //ulong number10 = 11;
            //UInt64 number11 = 12;

            //byte number = 255;
            //Byte numbers = 255;//1字节 8位

            //int number1 = 1;//4个字节 32位
            //Int32 number2 = 2;

            //short number3 = 3;//2个字节 16位
            //Int16 number4 = 4;

            //long number5 = 5;//8个字节 64位
            //Int64 number6 = 6;

            //uint number7 = 7;//加u 表示没有负数
            //UInt32 number8 = 8;

            //ushort number9 = 9;
            //UInt16 number10 = 10;

            //ulong number11 = 11;
            //UInt64 number12 = 12;

            #endregion

            #region 2-浮点型  单精度浮点型    双精度浮点型  财务专用   #region #endregion
            /*
            //单精度浮点型 7位 如果超出精度就会四舍五入
            float mfloat = 1.9888888888f;//float float float float float float float float float float
            Console.WriteLine(mfloat);
            //双精度浮点型 15-16位 
            double mdouble = 1.988888888;//double double double double double double double double 
            Console.WriteLine(mdouble);
            //财务专业
            decimal mdecimal = 1.98888888888888m;//decimal decimal decimal decimal decimal decimal decimal
            Console.WriteLine(mdecimal);
            */
            //int age;//声明了一个变量  先声明后赋值
            //age = 10;//给这个变量赋值 10给了age
            // float a = 1.88f;//单精度类型 7位 float类型赋值后加f
            // double d = 1.888888;//双精度类型 15-16位 double类型可以加d，也可以不加
            // decimal de = 1.8888888888m;//高精度 或财务专用 decimal类型赋值后加m
            // Console.WriteLine(a);//输出
            //Console.WriteLine(d);
            // Console.WriteLine(de);

            #endregion

            #region 3-布尔类型 bool 两个结果 true false
            /*
            //true true true true true true true true true true true true true true true true true 
            //false false false false false false false false false false false false false false 
            //bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool
            bool mbool = true;//1

            bool mbool1= false;//0

            Console.WriteLine(mbool);
            Console.WriteLine(mbool1);
            short mshort1 = Convert.ToInt16(mbool);//Convert Convert Convert Convert Convert Convert Convert Convert
            Console.WriteLine(mshort1);
            */
            bool b = false;//布尔类型 是非判定的 ，两种状态：真和假 ，true和false
                           //它是一个关键字，是System.Boolean的昵称，简称。
            if (b)
            {
                Console.WriteLine("我有钱");
            }
            else
            {
                Console.WriteLine("没钱");
            }

            #endregion

            #region 4-字符类型  char 单个字母 单个数字 单个汉字 转义字符
            /*
            //char char char char char char char char char char char char char char char char
            char mchar = '耀';//单个汉字
            char mchar1 = 'A';//a-z A-Z
            char mchar2 = '9';//0-9
            char mchar3 = '\'';//转义字符
            Console.WriteLine(mchar);
            Console.WriteLine(mchar1);
            Console.WriteLine(mchar2);
            Console.WriteLine(mchar3+mchar3);//如果使用加号进行字符的输出它会将字符表示的数字求和。
                                             //如何显示转义字符(mchar3+""+mchar3)
            */
            char cha = 'a';//单个字符 由字符组成字符串，不允许多个字符挤在一起
            char chas = '0';//约定：只能用单引号标示，双引号报错
            Console.WriteLine(Convert.ToInt32(cha));//Convert:转换 to：朝向 int32：输出的是：Ascll 表的48
            Console.WriteLine(Convert.ToInt32(chas));//输出的是：Ascll表的97；
           ConsoleKeyInfo info = Console.ReadKey();//要求你有输入，用返回值获取输入
            //Console.WriteLine(info.KeyChar);//输出上一句话按键的char类型的值
            #endregion

            #region  5-非数值类型/引用类型：不是确切的值，字符串string  object
            //string string string string string string string string string string string string 
            //object obgect obgect obgect obgect obgect obgect obgect obgect obgect obgect obgect
            /*
            string mstring = "耀耀耀耀耀耀耀耀耀耀";
            Console.WriteLine(mstring);
            //如何让程序接收用户输入  console.ReadLine就是读取用户的输入。
            Console.WriteLine("请输入用户名");
            string readsta= Console.ReadLine();
            Console.WriteLine("刚才用户输入的是:"+readsta);
            //数据类型转换用Convert.to
            Console.WriteLine("请输入年龄");
            int agt1 =Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("用户的年龄是:"+agt1);
            
            bool b = false;
            int number5 = Convert.ToInt32(b);
            Console.WriteLine(number5);
            string num = "s";
            char char1 = Convert.ToChar(num);
            Console.WriteLine(char1);
            */
            //转换Convert.To Convert.To Convert.To Convert.To Convert.To Convert.To Convert.To Convert.To
            //字符串string string string string string string string string string string string string string
            //接收输入ConsoleReadLine ConsoleReadLine ConsoleReadLine ConsoleReadLine ConsoleReadLine
            //ConsoleReadLine ConsoleReadLine ConsoleReadLine ConsoleReadLine ConsoleReadLine
            string msg = "你收到一条消息";//用于储存一段话（字符串） 它是String的的简称（昵称）
            String msg0 = msg;//string赋值到String
            string msg1 = "sss";//String简化strin
            string aaa = "aaaa\nbbbb";//\n换行符 \t制表符也叫Tab
            //@符号用于原样输出string在编辑器下的格式，方便保持一种格式（换行）
            string bbb = @"
aaaaa

bbbbb";
            string ccc = $"{msg}老师~";//通过$号，我们可以在字符串中嵌入逻辑运算
            Console.WriteLine(ccc);
            #endregion

            #region   6-object 万能类型 也是所以数据类型的基类（最基础的类）
            /*
            //object object object object object object object object object object object object object
            object mobject = '1';
            object mobject1 = true;
            object mobject2 = "好的好的，111";
            object mobject3 = 1.99999999f;
            object mobject4 = 1.99999999999999m;
            Console.WriteLine(mobject);
            Console.WriteLine(mobject1);
            Console.WriteLine(mobject2);
           */
            #endregion
           
            #region //常量 常量读取速度快，而且系统会单独分配一块常量区域，用来存放常量。
            //加上const=常量
           // const int age = 100;
            //Console.WriteLine(age);
            
            #endregion

            #region 7-隐式转换和显示转换
            /*
            //显示转换 会造成精度丢失，但是不会丢失整值。
            int number = 100;
            double b = 19.99;
            int result;
            result= (int)(number + b);
            Console.WriteLine(result);


            //隐式转换 会自动提升类型，不会造成精度丢失。
            int number1 = 100;
            double b1 = 19.99;
            double res;
            res = number1 + b1;
            Console.WriteLine(res);
            */
            #endregion









            Console.ReadKey();







        }
    }
}
